---
title: 2.1 ServerOptions 配置说明
description: Feat ServerOptions 配置说明
sidebar:
    order: 1
---

## debug
**类型:** `boolean`

**默认值:** `false`

是否开启调试模式。

```java "debug(true)"
Feat.httpServer(options -> options.debug(true))
        .listen();
```
开启 debug 模式后，会在控制台输出 HTTP 请求/响应的详细信息。
适用于调试和排查问题，建议生产环境下关闭。

## bannerEnabled
**类型:** `boolean`

**默认值:** `true`

是否开启 banner。
```java "bannerEnabled(false)"
Feat.httpServer(options -> options.bannerEnabled(false))
       .listen();
```
开启 banner 后，启动时会在控制台输出 Feat HTTP 服务器的版本信息。

## threadNum
**类型:** `int`

**默认值:** `CPU 核数`,至少为 2。

设置 HTTP 服务器的线程数。
```java "threadNum(4)"
Feat.httpServer(options -> options.threadNum(4))
    .listen();
```
合理设置线程数可以充分利用系统资源，提高服务器性能。建议根据实际业务负载和系统资源情况进行调整。

## setMaxRequestSize
**类型:** `long`

**默认值:** `Integer.MAX_VALUE`

设置最大请求大小。
```java "setMaxRequestSize(1024 * 1024 * 1024)"
Feat.httpServer(options -> options.setMaxRequestSize(1024 * 1024 * 1024))
       .listen();
```
HTTP 请求报文的大小不能超过这个值，否则会返回 **413(Payload Too Large)** 错误。建议根据业务需求设置合适的值，避免恶意的大请求消耗服务器资源。

## readBufferSize
**类型:** `int`

**默认值:** `8 * 1024`

设置单个 TCP 连接的读取缓冲区大小。
```java "readBufferSize(16 * 1024)"
Feat.httpServer(options -> options.readBufferSize(16 * 1024))
      .listen();
```
读缓冲区的大小至少要能容纳一个完整的 URL 或 Header value，否则会触发异常。合理设置这个值可以提高性能和减少内存占用。

## writeBufferSize
**类型:** `int`

**默认值:** `1024`

设置单个 TCP 连接的写入缓冲区大小。
```java "writeBufferSize(16 * 1024)"
Feat.httpServer(options -> options.writeBufferSize(16 * 1024))
     .listen();
```
合理设置写缓冲区大小可以优化响应数据的传输效率。

## headerLimiter
**类型:** `int`

**默认值:** `100`

设置 HTTP 请求头的限制。
```java "headerLimiter(10)"
Feat.httpServer(options -> options.headerLimiter(10))
    .listen();
```
若解析出的 HTTP 请求头数量超过这个值，会忽略后续的请求头。这个限制可以防止恶意请求携带过多的请求头消耗服务器资源。

## idleTimeout
**类型:** `long`

**默认值:** `60000`

设置连接空闲超时时间，单位为毫秒。
```java "setIdleTimeout(30000)"
Feat.httpServer(options -> options.setIdleTimeout(30000))
    .listen();
```
当连接在指定时间内没有数据传输时，服务器会主动关闭该连接。合理设置超时时间可以及时释放空闲连接占用的资源。

## serverName
**类型:** `String`

**默认值:** `"feat"`

设置服务器名称。
```java "serverName(\"my-server\")"
Feat.httpServer(options -> options.serverName("my-server"))
    .listen();
```
服务器名称会在响应头中的 Server 字段中显示。设置自定义的服务器名称有助于区分不同的服务实例。

## secure
**类型:** `boolean`

**默认值:** `false`

是否启用 HTTPS。
```java
Feat.httpServer(options -> options.addPlugin(new SslPlugin(sslConfig)))
    .listen();
```
通过添加 SslPlugin 插件来启用 HTTPS，建议在生产环境中使用 HTTPS 来保证数据传输的安全性。

## lowMemory
**类型:** `boolean`

**默认值:** `false`

是否启用低内存模式。
```java "setLowMemory(true)"
Feat.httpServer(options -> options.setLowMemory(true))
    .listen();
```
在内存资源受限的环境下，可以启用低内存模式来优化内存使用。